"""
队列
qsize()             获取当亲队列包含的消息数量
empty()             判断队列是否为空，为空返回True,不是空的返回False
full()              判断队列是否满了，满了结果为True，否则为False
get(block=True)     获取队列中的一条信息，然后从队列中移除，block默认值为True
get_nowait()        相当于get(block=False),消息队列为空时，抛出异常
put(item,block=True)将item消息放入队列，默认block为True
put_nowait(item)    相当于put(item,block=False)
"""
from multiprocessing import Queue
if __name__ == '__main__':
    # 创建一个队列,最多接收3条队列
    q = Queue(3)
    print("队列是否为空：", q.empty())
    print("队列是否为满：", q.full())
    # 添加消息
    q.put("hello")
    q.put("world")
    q.put("python")
    print("队列中有多少个消息：", q.qsize())
    # 出队
    print("出队：", q.get())
    print("队列中有多少个消息：", q.qsize())
    # 入队
    q.put_nowait("html")
    # 队列为满用put_nowait会报错
    # q.put_nowait("sql")
    # 队列为满用put程序不会报错，程序会等待，什么时候有空位置，什么时候会入队
    # q.put("sql")
    # 等待2秒，如果2秒后还没有入队会抛出异常
    # q.put("sql", block=True, timeout=2)
    # 遍历
    if not q.empty():
        for i in range(q.qsize()):
            print(q.get_nowait())
